package Logica.Entidades;

import java.util.ArrayList;
import java.util.List;

public class Formacion  {

	private int idFormacion;
	private int puntaje;
	private int transferencias;
	private List<Jugador> titulares;
	private List<Jugador> suplentes;
	
	public Formacion (int id, int p, int t){
		idFormacion = id;
		puntaje = p;
		transferencias = t;
		titulares = new ArrayList<Jugador>();
		for(int i = 0 ; i < 11 ; i++)
			titulares.add(null);
		suplentes = new ArrayList<Jugador>();
		for(int i = 0 ; i < 4 ; i++)
			suplentes.add(null);
	}
	
	public Formacion (){
		puntaje = 0;
		transferencias = 3;
		titulares = new ArrayList<Jugador>();
		for(int i = 0 ; i < 11 ; i++)
			titulares.add(null);
		suplentes = new ArrayList<Jugador>();
		for(int i = 0 ; i < 4 ; i++)
			suplentes.add(null);
	}

	public int getIdFormacion(){
		return idFormacion;
	}
	
	
	public void setTitulares(List<Jugador> tit){
		titulares = tit;
	}
	
	public void setSuplentes(List<Jugador> sup){
		suplentes = sup;
	}
	
	public List<Jugador> getTitularesPosicion(String posicion){
		List<Jugador> resultado = new ArrayList<Jugador>();
		for(Jugador j: titulares){
			if(j.getPosicion() == posicion)
				resultado.add(j);
		}
		return resultado;
	}
	
	public List<Jugador> getTitulares(){
		return titulares;
	}
	
	public List<Jugador> getSuplentes(){
		return suplentes;
	}
	
	public int getPuntaje(){
		return puntaje;
	}
	
	public int getTransferencias(){
		return transferencias;
	}
	
	public void addTitular(Jugador j){
		int index = 0;
		boolean agregado = false;
		String posicion = j.getPosicion();

		if(posicion.equals("DEF"))
			index = 1;
		else if(posicion.equals("VOL"))
			index = 5;
		else if(posicion.equals("DEL"))
			index = 9;

		while(!agregado){
			Jugador lugar = titulares.get(index);
			if(lugar == null){
				titulares.remove(index);
				titulares.add(index,j);
				agregado = true;
			}
			else
				index++;
		}
	}
	
	public void addTitular(Jugador j, String posicion){
		int index = 0;
		boolean agregado = false;

		if(posicion.equals("DEF"))
			index = 1;
		else if(posicion.equals("VOL"))
			index = 5;
		else if(posicion.equals("DEL"))
			index = 9;

		while(!agregado){
			Jugador lugar = titulares.get(index);
			if(lugar == null){
				titulares.remove(index);
				titulares.add(index,j);
				agregado = true;
			}
			else
				index++;
		}
	}
	
	public void addSuplente(Jugador j){
		int index = 0;
		boolean agregado = false;
		String posicion = j.getPosicion();

		if(posicion.equals("DEF"))
			index = 1;
		else if(posicion.equals("VOL"))
			index = 2;
		else if(posicion.equals("DEL"))
			index = 3;

		while(!agregado){
			Jugador lugar = suplentes.get(index);
			if(lugar == null){
				suplentes.remove(index);
				suplentes.add(index,j);
				agregado = true;
			}
			else
				index++;
		}
	}
	
	public void addSuplente(Jugador j,String posicion){
		int index = 0;
		boolean agregado = false;

		if(posicion.equals("DEF"))
			index = 1;
		else if(posicion.equals("VOL"))
			index = 2;
		else if(posicion.equals("DEL"))
			index = 3;

		while(!agregado){
			Jugador lugar = suplentes.get(index);
			if(lugar == null){
				suplentes.remove(index);
				suplentes.add(index,j);
				agregado = true;
			}
			else
				index++;
		}
	}
	
	public Jugador getSuplentePosicion(String posicion){
		int index = 0;
		if(posicion.equals("DEF"))
			index = 1;
		else if(posicion.equals("VOL"))
			index = 2;
		else if(posicion.equals("DEL"))
			index = 3;
		return suplentes.get(index);
	}
	
	public void removeTitular(Jugador tit){
		if(tit != null){
			int i;
			for(i = 0; i < titulares.size() ; i++){
				Jugador j = titulares.get(i);
				if(j != null && (tit.getId() == j.getId())){
					break;
				}
			}
			titulares.remove(i);
			titulares.add(i, null);
		}
	}
	
	public void removeSuplente(Jugador sup){
		int i;
		for(i = 0; i < suplentes.size() ; i++){
			Jugador j = suplentes.get(i);
			if(j != null && (sup.getId() == j.getId())){
				break;
			}
		}
		suplentes.remove(i);
		suplentes.add(i, null);
	}
	
	public void removeSuplente(Jugador sup, String posicion){
		
		int index = 0;
		if(posicion.equals("DEF"))
			index = 1;
		else if(posicion.equals("VOL"))
			index = 2;
		else if(posicion.equals("DEL"))
			index = 3;
		
		suplentes.remove(index);
		suplentes.add(index, null);
	}
	
	public void setPuntaje(int puntos) {
		puntaje += puntos;
	}
}

	